#pragma once

#include "Common.h"

#define BOARD_SIZE 32
#define MAX_FIGURE 4


void CreateZobristTable();
ZOBRIST_KEY GenerateBoardKey(BitBoard* bb, bool bWhite);
ZOBRIST_KEY GenerateBoardKey64(BitBoard64* bb, bool bWhite);

// template overlap for generating zobrist keys
template<typename BB> ZOBRIST_KEY GenerateZobristHash(BB* bb, bool bWhite);
template<> ZOBRIST_KEY GenerateZobristHash<BitBoard>(BitBoard* bb, bool bWhite);
template<> ZOBRIST_KEY GenerateZobristHash<BitBoard64>(BitBoard64* bb, bool bWhite);

